package tt.dz.biz.service.menu;

import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import tt.dz.biz.annotation.MsLog;
import tt.dz.biz.dao.menu.MenuDAOImpl;
import tt.dz.common.DzConstants;
import tt.dz.common.DzConstants.BizType;
import tt.dz.common.DzConstants.bizSysCode;
import tt.dz.common.LogUtil;
import tt.dz.vo.MenuVO;
import tt.dz.vo.RoleMenuVO;
import tt.dz.vo.RoleVO;

@Service("menuService")
public class MenuService
{
  @Resource(name="menuDAO")
  private MenuDAOImpl menuDAOImpl;
  
  public List<MenuVO> queryMenuByRole(RoleVO roleVO)
  {
    try
    {
      return this.menuDAOImpl.queryMenuByRole(roleVO);
    }
    catch (Exception e)
    {
      LogUtil.error("查询角色菜单异常", e);
    }
    return new ArrayList();
  }
  
  public List<MenuVO> queryAllMenu()
  {
    try
    {
      return this.menuDAOImpl.queryAllMenu();
    }
    catch (Exception e)
    {
      LogUtil.error("查询角色菜单异常", e);
    }
    return new ArrayList();
  }
  
  public List<MenuVO> queryMenuByRole(List<String> roleIdList)
  {
    try
    {
      return this.menuDAOImpl.queryMenuByRole(roleIdList);
    }
    catch (Exception e)
    {
      LogUtil.error("查询角色菜单异常", e);
    }
    return new ArrayList();
  }
  
  @MsLog(bizCode="101", bizName="保存角色-菜单关系", bizType=DzConstants.BizType.OTHER)
  public boolean batchModifyRoleMenu(List<RoleMenuVO> roleMenuVOs)
  {
    try
    {
      for (RoleMenuVO roleMenuVO : roleMenuVOs)
      {
        roleMenuVO.setSysCode(DzConstants.bizSysCode.MAIN_SERVER.value());
        if (roleMenuVO.getIsValid().intValue() == 0) {
          this.menuDAOImpl.deleteRoleMenu(roleMenuVO);
        } else if (this.menuDAOImpl.getRoleMenuCount(roleMenuVO) > 0) {
          this.menuDAOImpl.updateRoleMenu(roleMenuVO);
        } else {
          this.menuDAOImpl.insertRoleMenu(roleMenuVO);
        }
      }
      return true;
    }
    catch (Exception e)
    {
      LogUtil.error("批量保存角色菜单关系异常", e);
    }
    return false;
  }
}
